$header-icon-size-sm: theme('spacing.5');
$header-button-size-sm: theme('spacing.8');
$header-gap: theme('spacing.1');
$panel-x-offset: calc($header-button-size-sm / 2 + $header-gap);

/**
 * Panel styles shared between StreamField and InlinePanel,
 * for repeating collapsible panels which can be reordered.
 * Top-level and nested panels have guiding borders to show their start and end,
 * as well as indentation for nested panels.
 */

// Styles for the top-level panel, and any panel within.
.w-panel--nested {
  @include guide-line-active();

  .w-panel__divider {
    @include guide-line-horizontal();
    // Slightly nicer text alignment.
    margin-top: 1px;
  }

  .w-panel__content {
    @include guide-line-vertical();
    // Center the vertical line.
    margin-inline-start: calc(-1 * theme('spacing.3'));
    padding-inline-start: theme('spacing.3');

    @include media-breakpoint-up(sm) {
      margin-inline-start: calc(-1 * $panel-x-offset);
      padding-inline-start: $panel-x-offset;
    }
  }

  .w-panel__anchor {
    // Mask the overlap with the parent panel’s guide line.
    background-color: $color-white;
  }

  .w-panel__heading--label {
    // Use smaller labels within nested panels in InlinePanel.
    @apply w-label-2;
  }
}

// Styles for nested panels excluding the top level.
.w-panel--nested .w-panel {
  @include guide-line-nested();
  // Indentation for nested panels.
  margin-inline-start: theme('spacing.7');
  margin-bottom: theme('spacing.6');

  // Tighter spacing for nested panel headers so their icons align
  // with parent panels’ guiding line.
  .w-panel__header {
    gap: 0;
    transform: translateX(calc(-1 * theme('spacing.5')));

    @include media-breakpoint-up(sm) {
      transform: translateX(theme('spacing.1'));
    }
  }

  // For nested panels, there is always enough space for the prefix anchor.
  .w-panel__anchor--prefix {
    display: inline-grid;
  }

  // Nested panels never need the suffix anchor.
  .w-panel__anchor--suffix {
    display: none;
  }
}
